In developing software, it is typical that errors or “bugs” in the code will be discovered. Hopefully, the errors are discovered during software testing before the software is released to avoid user frustration or the need to create and apply patches, fixes, or corrected versions. Software testing may involve simulated user or multi-user interaction with the software being developed, during which a script of test data is applied to the software to simulate actual use and, hopefully, identify errors in the software.
In testing software, a test script including a number of simulated user instructions is applied to the software. At the conclusion of the test script, it is determined if an error occurred. The results of the test generally are recorded to inform the developers of the software whether the software includes any bugs. At the conclusion of the test, the computer or computing environment used to perform the test may be reallocated to run another test of the same software or to run a test on a different software program.
Unfortunately, when software fails during a test, even if the test script included relatively few instructions, once the complete test script has been executed, it may prove difficult to determine what were the circumstances or causes of the failure. Even knowing what type of failure occurred during execution of the test still may result in a great number of possible problems that may have to be investigated and addressed in order to resolve the failure.
The difficulty in resolving errors or bugs may be particularly acute in the case of intermittent failures. Intermittent failures, by definition, do not occur each time that a software program is run, each time it is tested, or even each time the same software program is subjected to the same test. Such failures may be caused by a series of events that sometimes cause processes within a computing environment to conflict or by a coincidence of events that sometimes occur in a computing environment that result in an occurrence of failure in another computing environment. Because it may be difficult to identify the circumstances that result in the occurrence of such an intermittent failure, it may be more difficult to resolve than a failure that occurs regularly.